package com.zcxx.utils;

import io.github.swagger2markup.Swagger2MarkupConfig;
import io.github.swagger2markup.Swagger2MarkupConverter;
import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder;
import io.github.swagger2markup.markup.builder.MarkupLanguage;

import java.net.URL;
import java.nio.file.Paths;

/**
 * @Author WangShuai
 * @Date 2025/3/8 9:53
 * @Version 1.0
 * @Description 用于将 Swagger API 文档导出为 Markdown 格式$
 */
public class SwaggerExportUtil {

    /**
     * 将 Swagger API 文档导出为 Markdown 格式文件
     *
     * @param swaggerUrl Swagger JSON 地址，通常来自后端服务
     * @param outputDir  导出文件的输出目录
     * @throws Exception 当导出过程中发生错误时抛出
     */
    public static void exportSwaggerToMarkdown(String swaggerUrl, String outputDir) throws Exception {
        // 配置 Swagger2Markup
        Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
                .withMarkupLanguage(MarkupLanguage.MARKDOWN) // 导出为 Markdown
                .build();

        // 导出 Swagger 文档
        Swagger2MarkupConverter.from(new URL(swaggerUrl))
                .withConfig(config)
                .build()
                .toFolder(Paths.get(outputDir)); // 指定输出目录
    }

    /**
     * 主函数，用于测试 Swagger 文档导出功能
     *
     * @param args 命令行参数
     * @throws Exception 当导出过程中发生错误时抛出
     */
    public static void main(String[] args) throws Exception {
        String swaggerUrl = "http://localhost:8080/v2/api-docs"; // Swagger JSON 地址
        String outputDir = "src/main/resources/docs/markdown"; // 输出目录
        exportSwaggerToMarkdown(swaggerUrl, outputDir);
        System.out.println("Swagger 文档已导出为 Markdown 格式");
    }
}
